package xyz.ssf.cloud.common.core.storage;

import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

/**
 * 存储策略接口
 * 定义了文件存储的基本操作
 */
public interface StorageStrategy {
    
    /**
     * 上传文件
     * @param file 上传的文件
     * @param path 存储路径，不包含文件名
     * @param filename 文件名
     * @return 文件访问URL
     */
    String uploadFile(MultipartFile file, String path, String filename) throws Exception;
    
    /**
     * 上传文件
     * @param inputStream 文件输入流
     * @param path 存储路径，不包含文件名
     * @param filename 文件名
     * @return 文件访问URL
     */
    String uploadFile(InputStream inputStream, String path, String filename) throws Exception;
    
    /**
     * 删除文件
     * @param fileUrl 文件URL或路径
     * @return 是否删除成功
     */
    boolean deleteFile(String fileUrl) throws Exception;
    
    /**
     * 获取存储类型
     * @return 存储类型标识
     */
    String getType();
} 